home *** CD-ROM | disk | FTP | other *** search
Wrap
Text File | 2000-09-26 | 30.3 KB | 1,112 lines
var AimSessionObserver = new Object(); // XXX Global to determine if our onload handler has been called yet. // For some reason, our onunload handler is getting called before onload // on the first time we create App.xul. This is a workaround. var gFirstTime = 1; AimSessionObserver.onAssert = function(datasource, source, property, target) { if (source.EqualsNode(AimSession)) { if (property.EqualsNode(SessionState)) { var state = target.QueryInterface(Components.interfaces.nsIRDFLiteral).Value; var signonItem = top.document.getElementById("miSignOn"); var signoffcloseItem = top.document.getElementById("miSignOffClose"); var peopleMenu = top.document.getElementById("people_menu"); var newIMMenu = top.document.getElementById("menu_newIM"); var importBuddyMenu = top.document.getElementById("miImportBuddyList"); var exportBuddyMenu = top.document.getElementById("miExportBuddyList"); if (state == "Register") { top.title = aimString("app.title.Register"); signonItem.setAttribute("value", aimString("miSignOn.SignOn")); signonItem.setAttribute("disabled", "true"); signoffcloseItem.setAttribute("disabled", "true"); peopleMenu.setAttribute("disabled", "true"); newIMMenu.setAttribute("disabled", "true"); importBuddyMenu.setAttribute("disabled", "true"); exportBuddyMenu.setAttribute("disabled", "true"); } else if (state == "Offline") { top.title = aimString("app.title.SignOn"); signonItem.setAttribute("value", aimString("miSignOn.SignOn")); signonItem.setAttribute("oncommand", "cmdSignOn();"); signoffcloseItem.setAttribute("disabled", "true"); signonItem.setAttribute("disabled", "false"); peopleMenu.setAttribute("disabled", "true"); newIMMenu.setAttribute("disabled", "true"); importBuddyMenu.setAttribute("disabled", "true"); exportBuddyMenu.setAttribute("disabled", "true"); } else if (state == "Online") { top.title = aimString("app.title.Online").replace(/%UserName%/, aimSessionCurrentScreenName()); signonItem.setAttribute("value", aimString("miSignOn.SignOff")); signonItem.setAttribute("oncommand", "cmdSignOff();"); signonItem.setAttribute("disabled", "false"); signoffcloseItem.setAttribute("disabled", "false"); peopleMenu.setAttribute("disabled", "false"); newIMMenu.setAttribute("disabled", "false"); importBuddyMenu.setAttribute("disabled", "false"); exportBuddyMenu.setAttribute("disabled", "false"); aimMigrateBuddyList( aimSessionCurrentScreenName() ); } else if (state == "OnlineAway") { top.title = aimString("app.title.OnlineAway"); signonItem.setAttribute("value", aimString("miSignOn.SignOff")); signonItem.setAttribute("oncommand", "cmdSignOff();"); signonItem.setAttribute("disabled", "false"); signoffcloseItem.setAttribute("disabled", "false"); peopleMenu.setAttribute("disabled", "false"); newIMMenu.setAttribute("disabled", "false"); importBuddyMenu.setAttribute("disabled", "false"); exportBuddyMenu.setAttribute("disabled", "false"); } else { top.title = aimString("app.title.Connecting"); signonItem.setAttribute("value", aimString("miSignOn.Cancel")); signonItem.setAttribute("oncommand", "cmdCancelSignOn();"); signoffcloseItem.setAttribute("disabled", "true"); peopleMenu.setAttribute("disabled", "true"); newIMMenu.setAttribute("disabled", "true"); importBuddyMenu.setAttribute("disabled", "true"); exportBuddyMenu.setAttribute("disabled", "true"); } } } }; AimSessionObserver.onUnassert = function(datasource, source, property, target) {}; AimSessionObserver.onChange = function(datasource, source, property, oldTarget, newTarget) { AimSessionObserver.onAssert(datasource, source, property, newTarget); }; AimSessionObserver.onMove = function(datasource, oldSource, newSource, property, target) { AimSessionObserver.onAssert(datasource, newSource, property, target); }; AimSessionObserver.beginUpdateBatch = function(datasource) { }; AimSessionObserver.endUpdateBatch = function(datasource) { }; /* function ComeBack() { locateManager = aimLocateManager(); if ( locateManager ) { locateManager.SetUserInfoAwayMessage(null); } } */ function getsidebarframe() { var frame_list=window.frames; if (frame_list.length==0) return window; for (i=0; i<frame_list.length; i++) { if (frame_list[i].location =="chrome://aim/content/Sidebarpanel.xul"); return frame_list[i]; } } function GoAway( target ) { var name = target.getAttribute('MsgText'); if(name==''){ try{ name= document.getElementById('tbAway').getElementsByTagName("menuitem")[1].getAttribute('MsgText') } catch (e) { dump("goAway(): Some error finding tbAway message!\n Setting default backup message.\n"); name=aimString("away.DefaultMessage"); } } else{ //dump("goaway: msgText: "+name+" \n"); } locateManager = aimLocateManager(); if ( locateManager ) locateManager.SetUserInfoAwayMessage(name); } var targetElement = null; function GoAwayWait(target,wait){ targetElement=target setTimeout('GoAway( targetElement )',wait) } /* * Function: AimAppOnWndLoad() * * Arguments: None * * Return: None * * Description: Called once app.xul has finished loading. Adds observer * AimSessionObserver to the AimDataSource. Initializes the * sidebar. */ var RDF = null; function GetRDFService() { if ( RDF == null ) { var RDFClass = Components.classes['@mozilla.org/rdf/rdf-service;1']; RDF = RDFClass.getService(Components.interfaces.nsIRDFService); } } function AimAppOnWndLoad() { HideMenus(); // dump("AimAppOnWndLoad()\n"); // XXX See note at the top of the file gFirstTime = 0; // Initialize for current online state var state = AimDataSource.GetTarget(AimSession, SessionState, true); if (state == null) state = RDF.GetLiteral("Register"); AimSessionObserver.onAssert(AimDataSource, AimSession, SessionState, state); AimDataSource.AddObserver(AimSessionObserver); //if ((window.arguments) && (window.arguments[0] == "Setup")) //AimWindowLoad2(window); GetRDFService(); var sidebar_file = GetAwayMessagesFileLoc(); var datasource = RDF.GetDataSource(sidebar_file); var menu = document.getElementById("awayMenu"); menu.database.AddDataSource(datasource); menu.setAttribute('ref', menu.getAttribute('ref')); menu = document.getElementById("tbAway"); menu.database.AddDataSource(datasource); menu.setAttribute('ref', menu.getAttribute('ref')); setTimeout("CheckBuddyPanel()",500); setAdTimer(); } function HideMenus() { var menu; if ( aimIsShrimp() == true ) { menu=document.getElementById('menu_Help'); if(menu != null && menu != undefined) menu.setAttribute("hidden", "true"); } else { menu=document.getElementById('menu-services'); if(menu != null && menu != undefined) menu.setAttribute("hidden", "true"); menu=document.getElementById('menu-actions'); if(menu != null && menu != undefined) menu.setAttribute("hidden", "true"); menu=document.getElementById('menu-ShrimpHelp'); if(menu != null && menu != undefined) menu.setAttribute("hidden", "true"); } } /* * Function: AimAppOnWndUnload() * * Arguments: None * * Return: None * * Description: Called once app.xul has been unloaded. Removes observer * AimSessionObserver from the AimDataSource. */ function AimAppOnWndUnload() { // dump("AimAppOnWndUnload()\n"); // XXX See note at the top of the file if(gFirstTime == 1) return; AimDataSource.RemoveObserver(AimSessionObserver); } function AimAppOnSidebarTabChange() { dump("OnSidebarTabChange()\n"); } function AimAppPeopleMenuSwitch(tabValue) { dump("PeopleMenuSwitch()\n"); } //************ Command Handling **************** /* * Function: cmdNewBrowser() * * Arguments: None * * Return: None * * Description: Function invoked from menu or toolbar to create a new * browser window. * * Bugs: URL is hardcoded. Needs to open a user-specified preference. */ function cmdNewBrowser() { aimCmdNewBrowser("http://home.netscape.com"); } /* * Function: cmdNewEmail() * * Arguments: None * * Return: None * * Description: Function invoked from menu or toolbar to create a new * messenger window. */ function cmdNewEmail() { aimCmdNewEmail(); } function cmdNewChat(invScreenName,invProposal,invScreenNames,toExistingWindow,invMode){ inviteArgsObj = { inviteProposalScreenName: invScreenName, inviteProposalObj: invProposal, invitedScreenNames: invScreenNames, inviteToExistingWindow: toExistingWindow, inviteMode: invMode } window.openDialog('chrome://aim/content/chatInviteBuddy.xul','_blank','chrome,all,dialog=no',inviteArgsObj); } /* * Function: cmdNewIM() * * Arguments: None * * Return: None * * Description: Function invoked from menu or toolbar to create a new IM * window. Loads the window into a pre-connect state, e.g., the * dialog consists of screen name field and an editor. This * function determines which buddy is selected in the list. * If a buddy is selected (the first one found) and is online, * the screenname field in the IM window is initialized to that * buddy. Otherwise, the screen name field is set to "". */ function cmdNewIM() { var buddies = getSelectedBuddiesFromList(); if ( AimOnlineAway() ) ComeBack(); aimIMInvokeIMForm(buddies[0], null); } /* * Function: getSelectedBuddiesFromList() * * Arguments: None * * Return: array of strings of buddies * that are currently selected (expands Groups to all buddies in group). * * Description: Function invoked via cmdNewIM and cmdNewChatSidebar to poll the * Buddy list to find out which buddies (and expanded groups are selected). * This function will always return an Array, the first element will * be null if there was a problem, or no buddies selected. * */ function getSelectedBuddiesFromList() { selectedBuddies = new Array(); var l = 0; //Keep track of the selectedBuddies array. var sidebarframe=getsidebarframe(); var selectedGroup = ""; var wasSelected = false; var tree = sidebarframe.document.getElementById("OnlineBuddies"); var tab = sidebarframe.document.getElementById("OnlineOrgTabPanel"); if (!tab) return selectedBuddies; if (!tree ) return selectedBuddies; // in the ListSetup tab and the user tries to sendIM or Chat if ( tab.getAttribute('index') == 1 ) { return selectedBuddies; } // Loop through all the buddies to see which one they want to // send an IM to. If they have not selected anyone, or if they // have selected a group, bring up a blank IM send window. var groups = aimBuddyTreeFindGroups(tree); if ( groups ) { for (var i = 0; i != groups.length; i++) { if (groups[i].getAttribute("selected") == "true") { groups[i].setAttribute("open", true); selectedGroup = groups[i].getAttribute("Name"); if ( selectedGroup != null && selectedGroup != "" ) { wasSelected = true; // find the buddies in the data source that // correspond to the current group in the loop var buddies = null; for (var j = 0; j != groups[i].childNodes.length; j++) { if (groups[i].childNodes[j].nodeName == "treechildren") { buddies = groups[i].childNodes[j].childNodes; break; } } if (buddies) { for (var k = 0; k != buddies.length; k++) { selectedBuddies[l++] = buddies[k].getAttribute("ScreenName"); } } } } else { // find the buddies in the data source that // correspond to the current group in the loop var buddies = null; for (var j = 0; j != groups[i].childNodes.length; j++) { if (groups[i].childNodes[j].nodeName == "treechildren") { buddies = groups[i].childNodes[j].childNodes; break; } } if (buddies) { // we found the buddies, now see if we // can find a selected one for (var k = 0; k != buddies.length; k++) { if (buddies[k].getAttribute("selected") == "true") { selectedBuddy = buddies[k].getAttribute("ScreenName"); if ( selectedBuddy && selectedBuddy != "" ) { // found a selected buddy. If there // is a window already, display an // error message, else create a new one wasSelected = true; selectedBuddies[l++] = selectedBuddy; } } } } } } } return selectedBuddies; } /* * Function: cmdLoadBuddyList() * * Arguments: None * * Return: None * * Description: Unimplemented. See bugsplat 361248 */ function cmdLoadBuddyList() { dump("Implement Menu Command cmdLoadBuddyList()\n"); } /* * Function: cmdSaveBuddyList() * * Arguments: None * * Return: None * * Description: Unimplemented. See bugsplat 361248 */ function cmdSaveBuddyList() { dump("Implement Menu Command cmdSaveBuddyList()\n"); } /* * Function: cmdSendFile() * * Arguments: None * * Return: None * * Description: Unimplemented */ function cmdSendFile() { dump("Implement Menu Command cmdSendFile()\n"); } /* * Function: cmdGetFile() * * Arguments: None * * Return: None * * Description: Unimplemented */ function cmdGetFile() { dump("Implement Menu Command cmdGetFile()\n"); } /* * Function: cmdSignOn() * * Arguments: None * * Return: None * * Description: Called from menu item or toolbar. Passes control to sidebar * panel cmdSignOn() (see SidebarPanel/SidebarPanel.js) */ function cmdSignOn() { //var sidebarframe = top.frames["AppPanel"]; //var sidebarframe=top.AIMDocumentPath; var sidebarframe=getsidebarframe(); if(sidebarframe) sidebarframe.cmdPanelSignOn(); else dump("XXX Error : no sidebarframe\n"); } /* * Function: cmdSignOff() * * Arguments: None * * Return: None * * Description: Calls aimSessionLogoff to close current IM session. * * */ function cmdSignOff() { aimSessionLogoff(); } /* * Function: cmdCancelSignOn() * * Arguments: None * * Return: None * * Description: Called during connection startup if cancel button is pressed. * Cancels the IM session by calling cmdSignOff(). * */ function cmdCancelSignOn() { cmdSignOff(); } /* * Function: cmdClose() * * Arguments: None * * Return: None * * Description: Invoked from close menu item, or from cmdSignOffAndClose(), * below. Causes the app window to be closed. * */ function cmdClose() { aimCmdClose(); } /* * Function: cmdSignOffAndClose() * * Arguments: None * * Return: None * * Description: Called in response to user selecting signoff and close menu * item. Signs off the current IM session and closes the * standalone window. */ function createInstance( contractid, iidName ) { var iid = eval( "Components.interfaces." + iidName ); return Components.classes[ contractid ].createInstance( iid ); } function cmdExportBuddyList() { var fileSpec = createInstance( "@mozilla.org/filespecwithui;1", "nsIFileSpecWithUI" ); var url; try { fileSpec.chooseOutputFile(aimString("title.exportbudlist"), "buddy_list.blt", fileSpec.eTextFiles + fileSpec.eAllFiles); } catch( e ) { // no biggie } if(fileSpec && fileSpec.isValid()) { var status; status = aimBuddyExportBuddyList(fileSpec); if ( status == false ) aimErrorBox(aimString("msg.exporttryagain")); else aimErrorBox(aimString("msg.exportsuccess")); } else aimErrorBox(aimString("msg.exportfailure")); } function cmdImportBuddyList() { var fileSpec = createInstance( "@mozilla.org/filespecwithui;1", "nsIFileSpecWithUI" ); var url; try { fileSpec.chooseInputFile( aimString("title.importbudlist"), fileSpec.eAllFiles, aimString("budlist.seamonkeybudlist"), "*.blt"); } catch( e ) { // no biggie } if(fileSpec) { if (fileSpec.isValid() && fileSpec.isFile()) { var status; status = aimBuddyImportBuddyList(fileSpec); if ( status == false ) aimErrorBox(aimString("msg.importtryagain")); else aimErrorBox(aimString("msg.importsuccess")); } else aimErrorBox(aimString("msg.importfailure")); } else aimErrorBox(aimString("msg.importfailure")); } function cmdSignOffAndClose() { cmdSignOff(); cmdClose(); } /* * Function: cmdAddBuddy() * * Arguments: None * * Return: None * * Description: Called in response to menu item of toolbar button in standalone * for adding a buddy to a buddy group. Opens BuddyAddBuddy.xul to * place a dialog that can be used to add a buddy. * * Bugs: Needs to support inline editing. * */ function cmdAddBuddy() { //var sidebarframe = top.frames["AppPanel"]; //var sidebarframe = window // in new UI land //dump("AIMDocumentPath: "+top.AIMDocumentPath+"\n"); //sidebarframe=top.AIMDocumentPath; var sidebarframe=getsidebarframe(); var foundOne = false; var selectedGroup = ""; var elt = sidebarframe; if (!sidebarframe) elt = window; var tree = elt.document.getElementById("ListSetup"); var groups = aimBuddyTreeFindGroups( tree ); if ( !groups || groups.length == 0 ) { aimErrorBox(aimString("msg.NoGroups")); return; } openDialog("chrome://aim/content/BuddyAddBuddy.xul", "", "modal=yes,titlebar,chrome", groups, tree, null); } /* * Function: cmdAddGroup() * * Arguments: None * * Return: None * * Description: Called in response to menu item of toolbar button in standalone * for adding a buddy group. Opens BuddyAddGroup.xul to place a * dialog that can be used to add a buddy group. * * Bugs: Needs to support inline editing. * */ function cmdAddGroup() { openDialog("chrome://aim/content/BuddyAddGroup.xul", "", "modal=yes,titlebar,chrome"); } /* * Function: SelectedGroup() * * Arguments: None * * Return: None * * Description: Constructor function for SelectedGroup objects * * */ function SelectedGroup() { var selected = "false"; var name = null; var selectedBuddies = null; } /* * Function: SelectedBuddy() * * Arguments: None * * Return: None * * Description: Constructor function for SelectedBuddy objects * */ function SelectedBuddy() { var selected = "false" var name = null; } /* * Function: cmdDelete() * * Arguments: None * * Return: None * * Description: Called in response to user clicking delete toolbar button or * selecting delete menu item. Deletes all selected groups (and * the buddies they contain) and all selected buddies. */ function cmdDelete() { // Delete all selected groups and or buddies //var sidebarframe = top.frames["AppPanel"]; //var sidebarframe=window // in new UI land //sidebarframe=top.AIMDocumentPath; var sidebarframe=getsidebarframe(); var selectedGroup = ""; var wasSelected = false; var tree = sidebarframe.document.getElementById("ListSetup"); var tab = sidebarframe.document.getElementById("OnlineOrgTabPanel"); if (!tab) return; if (!tree ) return; if ( tab.getAttribute('index') == 0 ) // in the online tab and the user hit delete return; var groups = aimBuddyTreeFindGroups( tree ); // dump( "Groups is " + groups + "\n" ); // dump("Num groups is " + groups.length + "\n"); top.selectedGroups = new Array(); for (var i = 0; i != groups.length; i++) { // make a record for this group top.selectedGroups[i] = new SelectedGroup; top.selectedGroups[i].selectedBuddies = new Array(); top.selectedGroups[i].name = groups[i].getAttribute("Name"); if (groups[i].getAttribute("selected") == "true") { wasSelected = "true"; top.selectedGroups[i].selected = "true"; } else top.selectedGroups[i].selected = "false"; // find the buddy nodes for this group. var buddies = null; for (var j = 0; j != groups[i].childNodes.length; j++) { if (groups[i].childNodes[j].nodeName == "treechildren") { // found it. buddies = groups[i].childNodes[j].childNodes; break; } } // if there were buddies, collect info on them if (buddies) { for (var j = 0; j != buddies.length; j++) { // create a record for this buddy top.selectedGroups[i].selectedBuddies[j] = new SelectedBuddy; if (buddies[j].getAttribute("selected") == "true") { // buddy is selected. Save the name // and set the selected flag to true wasSelected = "true"; top.selectedGroups[i].selectedBuddies[j].name = buddies[j].getAttribute("ScreenName"); top.selectedGroups[i].selectedBuddies[j].selected = "true"; } else top.selectedGroups[i].selectedBuddies[j].selected = "false"; } } } // now we have all we need to know. Delete the selected buddies // and the selected groups for ( var i = 0; i != top.selectedGroups.length; i++ ) { selectedGroup = top.selectedGroups[i].name; // first the group if ( top.selectedGroups[i].selected == "true" ) { if ( selectedGroup != null && selectedGroup != "" ) { answer = top.confirm( aimString("confirm.DeleteGroup").replace(/%GroupName%/, selectedGroup) ); if ( answer == true ) aimBuddyRemoveBuddyGroup(selectedGroup); } } else { // we didn't delete the group, so see if any buddies // in the group need to be deleted. for ( var j = 0; j != top.selectedGroups[i].selectedBuddies.length; j++ ) { if ( top.selectedGroups[i].selectedBuddies[j].selected == "true" ) { selectedBuddy = top.selectedGroups[i].selectedBuddies[j].name; if ( selectedBuddy && selectedBuddy != "" ) { //dump( "Deleting " + selectedBuddy + " from " + selectedGroup + "\n" ); answer = top.confirm( aimString("confirm.DeleteBuddy").replace(/%BuddyName%/, selectedBuddy).replace(/%GroupName%/, selectedGroup) ); if ( answer == true ) aimBuddyRemoveBuddy(selectedGroup, selectedBuddy); } } } } } if ( wasSelected == false ) aimErrorBox( aimString("msg.NothingToDelete") ); } function cmdAbEditCard() { //sidebarframe=top.AIMDocumentPath; var sidebarframe=getsidebarframe(); var selectedGroup = ""; var wasSelected = false; var tree = sidebarframe.document.getElementById("ListSetup"); var tab = sidebarframe.document.getElementById("OnlineOrgTabPanel"); if ( tab.getAttribute('index') == 0 ) // in the online tab and the user hit delete return; var groups = aimBuddyTreeFindGroups( tree ); // dump( "Groups is " + groups + "\n" ); // dump("Num groups is " + groups.length + "\n"); top.selectedGroups = new Array(); for (var i = 0; i != groups.length; i++) { // make a record for this group top.selectedGroups[i] = new SelectedGroup; top.selectedGroups[i].selectedBuddies = new Array(); top.selectedGroups[i].name = groups[i].getAttribute("Name"); if (groups[i].getAttribute("selected") == "true") { wasSelected = "true"; top.selectedGroups[i].selected = "true"; } else top.selectedGroups[i].selected = "false"; // find the buddy nodes for this group. var buddies = null; for (var j = 0; j != groups[i].childNodes.length; j++) { if (groups[i].childNodes[j].nodeName == "treechildren") { // found it. buddies = groups[i].childNodes[j].childNodes; break; } } if (buddies) { for (var j = 0; j != buddies.length; j++) { top.selectedGroups[i].selectedBuddies[j] = new SelectedBuddy; if (buddies[j].getAttribute("selected") == "true") { // buddy is selected. Save the name // and set the selected flag to true wasSelected = "true"; top.selectedGroups[i].selectedBuddies[j].name = buddies[j].getAttribute("ScreenName"); top.selectedGroups[i].selectedBuddies[j].selected = "true"; } else top.selectedGroups[i].selectedBuddies[j].selected = "false"; } } } for ( var i = 0; i != top.selectedGroups.length; i++ ) { selectedGroup = top.selectedGroups[i].name; if ( top.selectedGroups[i].selected == "true" ) { aimErrorBox(aimString("msg.SelectBuddy")); } else { for ( var j = 0; j != top.selectedGroups[i].selectedBuddies.length; j++ ) { if ( top.selectedGroups[i].selectedBuddies[j].selected == "true" ) { selectedBuddy = top.selectedGroups[i].selectedBuddies[j].name; if ( selectedBuddy && selectedBuddy != "" ) { var aimABInfo1= pIIMManager.QueryInterface(Components.interfaces.nsIAimABInfo); var abURI= new Object(); aimABInfo1.GetABURI(selectedBuddy, abURI); var abURI = aimABInfo().GetABURI(selectedBuddy); var rdf = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService(); rdf = rdf.QueryInterface(Components.interfaces.nsIRDFService); var card = rdf.GetResource(abURI); card = card.QueryInterface(Components.interfaces.nsIAbCard); //This is not currently suppoerted by AddressBook - ToDO later// //var updateview=DisplayCardViewPane(abURI); // window.openDialog("chrome://messenger/content/addressbook/abNewCardDialog.xul", "","chrome,resizeable=no,modal",{abURI:"abDirectory://abook.mab",card:card,okCallback:updateView}); //Workaround - Launch addressbook instead of ab card for selected buddy //toOpenWindowByType("mail:adressbook", "chrome://messenger/content/addressbook/addressbook.xul"); goEditCardDialog("abdirectory://abook.mab",card,null); } } } } } } function cmdCustom() { url = aimString("app.custom.url"); aimCmdNewBrowser(url); } function cmdAdClick() { //var adLink = aimString("app.ad.link"); var adLink; if (aimIsShrimp()) adLink = aimString("shrimp.ad.link") else adLink = aimString("app.ad.link"); var adMini = aimPrefsManager().GetBoolPref("aim.ad.minibrowser", null, true); // adMini will be true only for shrimp if (adMini) { var tearWin = window.open(adLink,adLink,'personalbar=no,toolbar=no,status=no,scrollbars=yes,resizable=yes,menubar=no'); if (window.focus) tearWin.focus(); } else aimCmdNewBrowser(adLink); } var ad_access=1; function setAdTimer() { var adButton = top.document.getElementById("adButton"); //var adImage = aimString("app.ad.image")+"?access=" + ad_access; var adImage; if (aimIsShrimp()) adImage = aimString("shrimp.ad.image")+"?access=" + ad_access else adImage = aimString("app.ad.image")+"?access=" + ad_access; ad_access++; var adTimer = aimString("app.ad.timer"); if(adButton) { adButton.setAttribute("src", adImage); } if(window) window.setTimeout('setAdTimer()', adTimer); } function aboutShrimp(url) { var tearWin = window.open(url,url,'personalbar=no,toolbar=no,status=no,scrollbars=yes,resizable=yes,menubar=no'); if (window.focus) tearWin.focus(); } function getSidebarDs() { var PANELS_RDF_FILE = "UPnls"; try { var locator_service = Components.classes["@mozilla.org/file/directory_service;1"].getService(); if (locator_service) locator_service = locator_service.QueryInterface(Components.interfaces.nsIProperties); var sidebar_file = locator_service.get(PANELS_RDF_FILE, Components.interfaces.nsIFile); if (!sidebar_file.exists()) { //Sidebar panels file does not exist? return; } var file_url = Components.classes["@mozilla.org/network/standard-url;1"].createInstance(Components.interfaces.nsIFileURL); file_url.file = sidebar_file; return file_url.spec; } catch (ex) { throw(ex); } } function CheckBuddyPanel() { var RDF = '@mozilla.org/rdf/rdf-service;1' RDF = Components.classes[RDF].getService(); RDF = RDF.QueryInterface(Components.interfaces.nsIRDFService); var panel_list =RDF.GetDataSource(getSidebarDs()).GetTarget(RDF.GetResource("urn:sidebar:current-panel-list"),RDF.GetResource("http://home.netscape.com/NC-rdf#"+"panel-list"), true); if (panel_list) { panel_list.QueryInterface(Components.interfaces.nsIRDFResource); } var container = Components.classes["@mozilla.org/rdf/container;1"].createInstance(); container = container.QueryInterface(Components.interfaces.nsIRDFContainer); try { container.Init(RDF.GetDataSource(getSidebarDs()), panel_list); } catch (ex) { throw(ex); } var panel_resource = RDF.GetResource("urn:sidebar:panel:im-panel"); var im_resource=RDF.GetResource("urn:sidebar:3rdparty-panel:chrome://aim/content/SidebarPanel.xul"); var panel_index = container.IndexOf(panel_resource); var panel_index2 = container.IndexOf(im_resource); if ((panel_index == -1) && (panel_index2==-1)) { if ((typeof window.sidebar == "object") && (typeof window.sidebar.addPanel == "function")) { window.sidebar.addPanel ("Buddy List","chrome://aim/content/SidebarPanel.xul",""); } } }